Function CalcularFechaHoy() : FechaString;
Var Year,Month,Day,WDay: Word;
	DayString,MonthString,YearString:String[4];
Begin
	GetDate(Year,Month,Day,WDay);

	Str(Trunc(Day),DayString);
	Str(Trunc(Year),YearString);
	Str(Trunc(Month),MonthString);

	CalcularFechaHoy := Concat(YearString,MonthString,DayString);
End;

Procedure MensajeDelSistema(Var Mensaje:String);
Begin
        ClrScr;
      	Writeln ('------------------------------------------------');
        Writeln(Mensaje);
	Writeln ('--- Enter para continuar ---');
	Readln;
	ClrScr;
End;

Procedure MostrarErrorArchivoLLeno();
Begin
    ClrScr;
    Writeln ('El numero de pedidos llego a su maximo (',MAX_PEDIDOS,')');
    Writeln ('Primero resuelva algunos pedidos antes de continuar');
    Writeln ('--Enter para continuar--');
    Readln;
End;

Function GenerarNumeroPedido(): Word;
Var
	Archivo : FilePedidos;
	UltimoPedido : Pedido;
Begin
	OpenFilePedidos(Archivo);
	If FileSize(Archivo) > 0 Then
	Begin
            	Seek(Archivo,FileSize(Archivo)-1);
            	Read(Archivo,UltimoPedido);
            	GenerarNumeroPedido:= UltimoPedido.Numero + 1;
	End
	Else
            	GenerarNumeroPedido := 1;
    	{Primer Registro}   	 
	Close(Archivo);
End;

Function ValidarCantidadPedidos(Var PedidoArchivo : FilePedidos) : Boolean;
Begin
	ValidarCantidadPedidos := (FileSize(PedidoArchivo) <= MAX_PEDIDOS);
End;

Procedure InsertarNuevoPedido(Var PedidoArchivo: FilePedidos);
Var
	NuevoPedido : Pedido;
Begin
    
        Writeln('--------Agregar nuevo pedido de reparación------------');
	Writeln('Ingrese El electrodomestico');

	Readln(NuevoPedido.Electrodomestico);
	NuevoPedido.Fecha:= CalcularFechaHoy();
	NuevoPedido.Numero:= GenerarNumeroPedido();

	OpenFilePedidos(PedidoArchivo);
	Seek(PedidoArchivo,FileSize(PedidoArchivo));
	Write(PedidoArchivo,NuevoPedido);
	ClrScr;
End;

Procedure AgregarPedidoReparacion();
Var
	PedidoArchivo:FilePedidos;
Begin
	OpenFilePedidos(PedidoArchivo);
	If ValidarCantidadPedidos(PedidoArchivo) Then
    	        InsertarNuevoPedido(PedidoArchivo)
	Else
	        MostrarErrorArchivoLLeno();

	Close(PedidoArchivo);
End;

